package locations.model;

import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedList;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
public class Profesional extends Persona implements Serializable {

    private String matricula;
    @ManyToOne
    @Cascade({CascadeType.ALL})
    private Servicio servicio;
    @ManyToOne
    @Cascade({CascadeType.ALL})
    private Especialidad especialidad;
    @OneToMany
    private Collection<HistoriaSocial> historiaSociales;

    public Profesional() {
        super();
        this.setHistoriaSociales(new LinkedList());
    }

    public Profesional(String nombre, String apellido, String matricula,
            String servicio, String especialidad) {
        super();
        this.setNombre(nombre);
        this.setApellido(apellido);
        this.matricula = matricula;
        this.servicio = new Servicio(servicio);
        this.especialidad = new Especialidad(especialidad);
    }

    public Profesional(String nombre, String apellido, String matricula) {
        super();
        this.setNombre(nombre);
        this.setApellido(apellido);
        this.matricula = matricula;

    }

    public Profesional(Long id, String nombre, String apellido,
            String matricula, String servicio, String especialidad) {
        super();
        this.setId(id);
        this.setNombre(nombre);
        this.setApellido(apellido);
        this.matricula = matricula;
        this.servicio = new Servicio(servicio);
        this.especialidad = new Especialidad(especialidad);
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public Servicio getServicio() {
        return servicio;
    }

    public void setServicio(Servicio servicio) {
        this.servicio = servicio;
    }

    public Especialidad getEspecialidad() {
        return especialidad;
    }

    public void setEspecialidad(Especialidad especialidad) {
        this.especialidad = especialidad;
    }

    public Collection<HistoriaSocial> getHistoriaSociales() {
        return historiaSociales;
    }

    public void setHistoriaSociales(Collection<HistoriaSocial> historiaSociales) {
        this.historiaSociales = historiaSociales;
    }

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return this.getApellido() + " " + this.getNombre();
    }
}